home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / APPEXPRT.PAK / CSDI.OWL < prev    next >
Text File  |  1997-05-06  |  26KB  |  765 lines

  1. ##{cheader.snp}
  2. #include <owl/pch.h>
  3.  
  4. ##@OPT_APPL_TOOLBAR
  5. #include <owl/buttonga.h>
  6. ##@OPT_APPL_STATUSBAR
  7. #include <owl/statusba.h>
  8. ##@QUERY_APPL_OLE_AUTO 2
  9. #include <owl/olefacto.h>
  10. #include <ocf/ocreg.h>
  11. ##@OPT_APPL_REGISTRY 2
  12. #include <classlib/cmdline.h>
  13. #include <winsys/registry.h>
  14. #include <stdio.h>
  15.  
  16. ##QUERY_FILE_H [[FileName]]
  17. #include "[[FileName]]"
  18. ##QUERY_WIND_CLIENT [[Client]]
  19. ##<<*Client QUERY_FILE_H [[Filename]]
  20. #include "[[Filename]]"                        // Definition of client class.
  21. ##--BEGIN-- ((@QUERY_APPL_MODEL != VALUE_DIALOG) || ((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU))
  22. ##      :<<TDialog QUERY_FILE_H [[Filename]]
  23. #include "[[Filename]]"                        // Definition of about dialog.
  24. ##--END-- ((@QUERY_APPL_MODEL != VALUE_DIALOG) || ((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU))
  25.  
  26.  
  27. ##--BEGIN-- @OPT_APPL_HELP
  28. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 3
  29. //
  30. // Generated help file.
  31. //
  32. ##@QUERY_APPL_HELP [[HelpFile]]
  33. const char HelpFileName[] = "[[HelpFile]].hlp";
  34.  
  35.  
  36. ##--END-- @OPT_APPL_HELP
  37. //{{[[TApplication]] Implementation}}
  38.  
  39.  
  40. ##--BEGIN-- @QUERY_APPL_OLE_AUTO
  41. //
  42. // OLE's ITypeInfo browses this symbol table for a list of all data,
  43. // properties, and methods exposed by this automated class.
  44. //
  45. DEFINE_AUTOCLASS([[TApplication]])
  46.   EXPOSE_APPLICATION([[TApplication]], "Application", "Application object", 0)
  47.   EXPOSE_QUIT("Quit", "Quit application", 0)
  48. //{{[[TApplication]]SYM_TBL_BEGIN}}
  49. //{{[[TApplication]]SYM_TBL_END}}
  50. END_AUTOCLASS([[TApplication]], tfAppObject | tfCanCreate, "[[TApplication]]", 0, 0);
  51.  
  52.  
  53. DEFINE_APP_DICTIONARY(AppDictionary);
  54. static TPointer<TRegistrar> Registrar;
  55.  
  56. REGISTRATION_FORMAT_BUFFER(200)
  57.  
  58. BEGIN_REGISTRATION(ApplicationReg)
  59. ##@QUERY_OLE_GUID [[GUID]]
  60.   REGDATA(clsid, "{[[GUID]]}")
  61. ##--BEGIN-- @QUERY_PRJ_NAME [[AppTitle]]
  62.   REGDATA(progid, "[[AppTitle]].Application.1")
  63.   REGDATA(appname, "[[AppTitle]] Server")
  64.   REGDATA(description, "[[AppTitle]] Server Application")
  65.   REGDATA(cmdline, "/Automation")
  66. //  REGDATA(debugger, "TDW")
  67. ##--END-- @QUERY_PRJ_NAME [[AppTitle]]
  68. END_REGISTRATION
  69.  
  70.  
  71. ##--END-- @QUERY_APPL_OLE_AUTO
  72. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 4
  73. //
  74. // Build a response table for all messages/commands handled
  75. // by the application.
  76. //
  77. ##(@OPT_APPL_MRU) && (@QUERY_APPL_MODEL != VALUE_DIALOG)
  78. DEFINE_RESPONSE_TABLE2([[TApplication]], TRecentFiles, TApplication)
  79. ##(!@OPT_APPL_MRU) || (@QUERY_APPL_MODEL == VALUE_DIALOG)
  80. DEFINE_RESPONSE_TABLE1([[TApplication]], TApplication)
  81. //{{[[TApplication]]RSP_TBL_BEGIN}}
  82. ##--BEGIN-- @QUERY_APPL_MODEL != VALUE_DIALOG
  83. ##:DBResponse(\\"[[TApplication]]", "CM_FILENEW", "CmFileNew", "", "COMMAND")
  84. ##:DBResponse(\\"[[TApplication]]", "CM_FILEOPEN", "CmFileOpen", "", "COMMAND")
  85.   EV_COMMAND(CM_FILENEW, CmFileNew),
  86.   EV_COMMAND(CM_FILEOPEN, CmFileOpen),
  87. ##@OPT_APPL_PRINTING 6
  88. ##:DBResponse(\\"[[TApplication]]", "CM_FILEPRINT", "CmFilePrint", "", "COMMAND")
  89. ##:DBResponse(\\"[[TApplication]]", "CM_FILEPRINTERSETUP", "CmFilePrintSetup", "", "COMMAND")
  90. ##:DBResponse(\\"[[TApplication]]", "CM_FILEPRINTPREVIEW", "CmFilePrintPreview", "", "COMMAND")
  91. ##:DBResponse(\\"[[TApplication]]", "CM_FILEPRINT", "CmPrintEnable", "", "ENABLER")
  92. ##:DBResponse(\\"[[TApplication]]", "CM_FILEPRINTERSETUP", "CmPrintEnable", "", "ENABLER")
  93. ##:DBResponse(\\"[[TApplication]]", "CM_FILEPRINTPREVIEW", "CmPrintEnable", "", "ENABLER")
  94.   EV_COMMAND(CM_FILEPRINT, CmFilePrint),
  95.   EV_COMMAND(CM_FILEPRINTERSETUP, CmFilePrintSetup),
  96.   EV_COMMAND(CM_FILEPRINTPREVIEW, CmFilePrintPreview),
  97.   EV_COMMAND_ENABLE(CM_FILEPRINT, CmPrintEnable),
  98.   EV_COMMAND_ENABLE(CM_FILEPRINTERSETUP, CmPrintEnable),
  99.   EV_COMMAND_ENABLE(CM_FILEPRINTPREVIEW, CmPrintEnable),
  100. ##--END-- @QUERY_APPL_MODEL != VALUE_DIALOG
  101. ##@OPT_APPL_HELP 2
  102. ##:DBResponse(\\"[[TApplication]]", "CM_HELPCONTENTS", "CmHelpContents", "", "COMMAND")
  103. ##:DBResponse(\\"[[TApplication]]", "CM_HELPUSING", "CmHelpUsing", "", "COMMAND")
  104.   EV_COMMAND(CM_HELPCONTENTS, CmHelpContents),
  105.   EV_COMMAND(CM_HELPUSING, CmHelpUsing),
  106. ##:DBResponse(\\"[[TApplication]]", "CM_HELPABOUT", "CmHelpAbout", "", "COMMAND")
  107.   EV_COMMAND(CM_HELPABOUT, CmHelpAbout),
  108. ##@OPT_APPL_DRAGDROP
  109. ##:DBResponse(\\"[[TApplication]]", "", "", "WM_DROPFILES", "")
  110.   EV_WM_DROPFILES,
  111. ##@OPT_APPL_PRINTING
  112. ##:DBResponse(\\"[[TApplication]]", "", "", "WM_WININICHANGE", "")
  113.   EV_WM_WININICHANGE,
  114. ##(@OPT_APPL_MRU) && (@QUERY_APPL_MODEL != VALUE_DIALOG)
  115.   EV_REGISTERED(MruFileMessage, CmFileSelected),
  116. //{{[[TApplication]]RSP_TBL_END}}
  117. END_RESPONSE_TABLE;
  118.  
  119.  
  120. ##--END-- (@QUERY_APPL_MODEL == VALUE_SDI) && !@OPT_APPL_DOCVIEW
  121. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 3
  122. //--------------------------------------------------------
  123. // [[TApplication]]
  124. //
  125. ##--BEGIN-- @QUERY_APPL_OLE_AUTO
  126. ##QUERY_WIND_TITLE [[Title]]
  127. ##@QUERY_TARGET_NAME [[Target]]
  128. ##(@OPT_APPL_MRU) && (@QUERY_APPL_MODEL != VALUE_DIALOG)
  129. [[TApplication]]::[[TApplication]]() : TApplication(::ApplicationReg["appname"], ::Module, &::AppDictionary), TRecentFiles(".\\[[Target]].ini", 4)
  130. ##(!@OPT_APPL_MRU) || (@QUERY_APPL_MODEL == VALUE_DIALOG)
  131. [[TApplication]]::[[TApplication]]() : TApplication(::ApplicationReg["appname"], ::Module, &::AppDictionary)
  132. ##--END-- @QUERY_APPL_OLE_AUTO
  133. ##--BEGIN-- !@QUERY_APPL_OLE_AUTO
  134. ##QUERY_WIND_TITLE [[Title]]
  135. ##@QUERY_TARGET_NAME [[Target]]
  136. ##(@OPT_APPL_MRU) && (@QUERY_APPL_MODEL != VALUE_DIALOG)
  137. [[TApplication]]::[[TApplication]]() : TApplication("[[Title]]"), TRecentFiles(".\\[[Target]].ini", 4)
  138. ##QUERY_WIND_TITLE [[Title]]
  139. ##(!@OPT_APPL_MRU) || (@QUERY_APPL_MODEL == VALUE_DIALOG)
  140. [[TApplication]]::[[TApplication]]() : TApplication("[[Title]]")
  141. ##--END-- !@QUERY_APPL_OLE_AUTO
  142. {
  143. ##@OPT_APPL_HELP 3
  144.   HelpState = false;
  145.   ContextHelp = false;
  146.   HelpCursor = 0;
  147.  
  148. ##@OPT_APPL_PRINTING 3
  149.   Printer = 0;
  150.   Printing = 0;
  151.  
  152. ##--BEGIN-- @QUERY_APPL_MODEL != VALUE_DIALOG
  153. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 3
  154.   // Common file file flags and filters for Open/Save As dialogs.  Filename and directory are
  155.   // computed in the member functions CmFileOpen, and CmFileSaveAs.
  156.   //
  157.   FileData.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
  158. ##OPT_DV_RESET
  159. ##OPT_DV_NEXT
  160. ##QUERY_DV_DESCR [[Descr]]
  161. ##--BEGIN-- QUERY_DV_FILTER [[Filter]]
  162. ## (Filter != "*.*") || (Descr != "All Files")
  163.   FileData.SetFilter("[[Descr]] ([[Filter]])|[[Filter]]|All Files (*.*)|*.*|");
  164. ## (Filter == "*.*") && (Descr == "All Files")
  165.   FileData.SetFilter("All Files (*.*)|*.*|");
  166. ##QUERY_DV_EXT [[Ext]]
  167.   FileData.DefExt = "[[Ext]]";
  168.  
  169. ##--END-- QUERY_DV_FILTER [[Filter]]
  170. ##--END-- @QUERY_APPL_MODEL != VALUE_DIALOG
  171.   // INSERT>> Your constructor code here.
  172. }
  173.  
  174.  
  175. [[TApplication]]::~[[TApplication]]()
  176. {
  177. ##@OPT_APPL_PRINTING 2
  178.   delete Printer;
  179.  
  180.   // INSERT>> Your destructor code here.
  181. }
  182.  
  183.  
  184. ##--BEGIN-- @OPT_APPL_HELP
  185. bool [[TApplication]]::CanClose()
  186. {
  187.   bool result = TApplication::CanClose();
  188.  
  189. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  190.   // Close the help engine if we used it.
  191.   //
  192.   if (result && HelpState)
  193.     GetMainWindow()->WinHelp(HelpFileName, HELP_QUIT, 0);
  194.  
  195.   return result;
  196. }
  197.  
  198.  
  199. ##--END-- @OPT_APPL_HELP
  200. ## (((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU) || (@QUERY_APPL_MODEL != VALUE_DIALOG))
  201. ##--BEGIN-- @OPT_APPL_TOOLBAR
  202. void [[TApplication]]::SetupSpeedBar(TDecoratedFrame* frame)
  203. {
  204.   ApxHarbor = new THarbor(*frame);
  205.  
  206. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  207.   // Create default toolbar New and associate toolbar buttons with commands.
  208.   //
  209.   TDockableControlBar* cb = new TDockableControlBar(frame);
  210. ##@QUERY_APPL_MODEL == VALUE_SDI 2
  211.   cb->Insert(*new TButtonGadget(CM_FILENEW, CM_FILENEW));
  212.   cb->Insert(*new TButtonGadget(CM_FILEOPEN, CM_FILEOPEN));
  213.   cb->Insert(*new TButtonGadget(CM_FILESAVE, CM_FILESAVE));
  214.   cb->Insert(*new TSeparatorGadget(6));
  215.   cb->Insert(*new TButtonGadget(CM_EDITCUT, CM_EDITCUT));
  216.   cb->Insert(*new TButtonGadget(CM_EDITCOPY, CM_EDITCOPY));
  217.   cb->Insert(*new TButtonGadget(CM_EDITPASTE, CM_EDITPASTE));
  218.   cb->Insert(*new TSeparatorGadget(6));
  219.   cb->Insert(*new TButtonGadget(CM_EDITUNDO, CM_EDITUNDO));
  220.   cb->Insert(*new TSeparatorGadget(6));
  221.   cb->Insert(*new TButtonGadget(CM_EDITFIND, CM_EDITFIND));
  222.   cb->Insert(*new TButtonGadget(CM_EDITFINDNEXT, CM_EDITFINDNEXT));
  223. ##@OPT_APPL_PRINTING 3
  224.   cb->Insert(*new TSeparatorGadget(6));
  225.   cb->Insert(*new TButtonGadget(CM_FILEPRINT, CM_FILEPRINT));
  226.   cb->Insert(*new TButtonGadget(CM_FILEPRINTPREVIEW, CM_FILEPRINTPREVIEW));
  227. ##@OPT_APPL_HELP 2
  228.   cb->Insert(*new TSeparatorGadget(6));
  229.   cb->Insert(*new TButtonGadget(CM_HELPCONTENTS, CM_HELPCONTENTS));
  230.  
  231. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  232.   // Add caption and fly-over help hints.
  233.   //
  234.   cb->SetCaption("Toolbar");
  235.   cb->SetHintMode(TGadgetWindow::EnterHints);
  236.  
  237.   ApxHarbor->Insert(*cb, alTop);
  238. }
  239.  
  240.  
  241. ##--END-- @OPT_APPL_TOOLBAR
  242. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  243. //--------------------------------------------------------
  244. // [[TApplication]]
  245. // ~~~~~
  246. // Application intialization.
  247. //
  248. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  249. void [[TApplication]]::InitMainWindow()
  250. {
  251.   if (nCmdShow != SW_HIDE)
  252. ##@QUERY_APPL_STARTUP == VALUE_NORMAL
  253.     nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWNORMAL : nCmdShow;
  254. ##@QUERY_APPL_STARTUP == VALUE_MIN
  255.     nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWMINIMIZED : nCmdShow;
  256. ##@QUERY_APPL_STARTUP == VALUE_MAX
  257.     nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWMAXIMIZED : nCmdShow;
  258.  
  259. ##@OPT_APPL_STATUSBAR
  260.   TSDIDecFrame* frame = new TSDIDecFrame(0, GetName(), 0, true);
  261. ##!@OPT_APPL_STATUSBAR
  262.   TSDIDecFrame* frame = new TSDIDecFrame(0, GetName(), 0, false);
  263. ##@QUERY_APPL_MODEL == VALUE_DIALOG
  264.   frame->SetFlag(wfShrinkToClient);
  265.  
  266. ##QUERY_WIND_STYLE [[StyleAttributes]]
  267. ##StyleAttributes != "" 4
  268.   // Override the default window style for the main window.
  269.   //
  270.   [[StyleAttributes]]
  271.  
  272. ##@OPT_APPL_DRAGDROP 4
  273.   // Enable acceptance of dropped files
  274.   //
  275.   frame->Attr.ExStyle |= WS_EX_ACCEPTFILES;
  276.  
  277. ##{fwndbkgd.snp}
  278. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  279.   // Assign icons for this application.
  280.   //
  281.   frame->SetIcon(this, IDI_SDIAPPLICATION);
  282.   frame->SetIconSm(this, IDI_SDIAPPLICATION);
  283.  
  284. ## (((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU)  || (@QUERY_APPL_MODEL != VALUE_DIALOG))
  285. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  286.   // Menu associated with window and accelerator table associated with table.
  287.   //
  288. ## (((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU)  || (@QUERY_APPL_MODEL != VALUE_DIALOG)) 2
  289.   frame->AssignMenu(IDM_SDI);
  290. ## (((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU)  || (@QUERY_APPL_MODEL != VALUE_DIALOG))
  291. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 3
  292.  
  293.   // Associate with the accelerator table.
  294.   //
  295. ## (((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU)  || (@QUERY_APPL_MODEL != VALUE_DIALOG)) 2
  296.   frame->Attr.AccelTable = IDM_SDI;
  297.  
  298. ## (((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU) || (@QUERY_APPL_MODEL != VALUE_DIALOG))
  299. ##@OPT_APPL_STATUSBAR 6
  300.   TStatusBar* sb = new TStatusBar(frame, TGadget::Recessed,
  301.                                   TStatusBar::CapsLock        |
  302.                                   TStatusBar::NumLock         |
  303.                                   TStatusBar::ScrollLock);
  304.   frame->Insert(*sb, TDecoratedFrame::Bottom);
  305.  
  306. ## (((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU) || (@QUERY_APPL_MODEL != VALUE_DIALOG))
  307. ##@OPT_APPL_TOOLBAR 2
  308.   SetupSpeedBar(frame);
  309.  
  310.   SetMainWindow(frame);
  311.  
  312. ## (((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU)  || (@QUERY_APPL_MODEL != VALUE_DIALOG))
  313.   frame->SetMenuDescr(TMenuDescr(IDM_SDI));
  314. ##--BEGIN-- @QUERY_APPL_CONTROL==VALUE_3D
  315.  
  316. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  317.   // Windows 3-D controls.
  318.   //
  319.   EnableCtl3d(true);
  320. ##--END-- @QUERY_APPL_CONTROL==VALUE_3D
  321. ##--BEGIN-- @QUERY_APPL_CONTROL==VALUE_BWCC
  322.  
  323. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  324.   // Borland Windows custom controls.
  325.   //
  326.   EnableBWCC();
  327. ##--END-- @QUERY_APPL_CONTROL==VALUE_BWCC
  328. }
  329.  
  330.  
  331. ##--BEGIN-- @OPT_APPL_REGISTRY
  332. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  333. //--------------------------------------------------------
  334. // [[TApplication]]
  335. // ~~~~~
  336. // Application instance initialization.
  337. //
  338. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  339. void [[TApplication]]::InitInstance()
  340. {
  341.   TApplication::InitInstance();
  342.  
  343.   ProcessCmdLine(lpCmdLine);
  344. }
  345.  
  346.  
  347. ##--END-- @OPT_APPL_REGISTRY
  348. ##{registry.snp}
  349. ##--BEGIN-- @QUERY_APPL_MODEL != VALUE_DIALOG
  350. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  351. //--------------------------------------------------------
  352. // [[TApplication]]
  353. // ~~~~~~~~~~~
  354. // Menu File New command
  355. //
  356. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  357. void [[TApplication]]::CmFileNew()
  358. {
  359. ##QUERY_WIND_CLIENT [[ClientClass]]
  360. ##--BEGIN-- <<*ClientClass QUERY_BASE_NAME [[BaseClient]]
  361. ##BaseClient == "TEditFile" 2
  362.   [[ClientClass]]* client = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), [[ClientClass]]);     // Client window for the frame.
  363.   client->NewFile();
  364. ##BaseClient == "TListBox" 3
  365.   [[ClientClass]]* client = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), [[ClientClass]]);     // Client window for the frame.
  366.   if (client->CanClose())
  367.     client->ClearList();
  368. ##--END-- <<*ClientClass QUERY_BASE_NAME [[BaseClient]]
  369. }
  370.  
  371.  
  372. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  373. //--------------------------------------------------------
  374. // [[TApplication]]
  375. // ~~~~~~~~~~~
  376. // Menu File Open command
  377. //
  378. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  379. void [[TApplication]]::CmFileOpen()
  380. {
  381. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  382.   // Display standard Open dialog box to select a file name.
  383.   //
  384.   *FileData.FileName = 0;
  385.  
  386. ##QUERY_WIND_CLIENT [[ClientClass]]
  387.   [[ClientClass]]* client = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), [[ClientClass]]);     // Client window for the frame.
  388.   if (client->CanClose())
  389.     if (TFileOpenDialog(GetMainWindow(), FileData).Execute() == IDOK)
  390.       OpenFile();
  391. }
  392.  
  393.  
  394. void [[TApplication]]::OpenFile(const char* fileName)
  395. {
  396.   if (fileName)
  397.     strcpy(FileData.FileName, fileName);
  398.  
  399. ##QUERY_WIND_CLIENT [[ClientName]]
  400. ##--BEGIN-- <<*ClientName QUERY_BASE_NAME [[BaseClient]]
  401. ##BaseClient == "TEditFile" 2
  402.   [[ClientName]]* client = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), [[ClientName]]);     // Client window for the frame.
  403.   client->ReplaceWith(FileData.FileName);
  404. ##BaseClient == "TListBox" 3
  405.   [[ClientName]]* client = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), [[ClientName]]);     // Client window for the frame.
  406.   client->ClearList();
  407.   LoadTextFile();
  408. ##--BEGIN-- (@OPT_APPL_MRU) && (@QUERY_APPL_MODEL != VALUE_DIALOG)
  409.  
  410. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  411.   // Add the file to the MRU list.
  412.   //
  413.   SaveMenuChoice(FileData.FileName);
  414. ##--END-- (@OPT_APPL_MRU) && (@QUERY_APPL_MODEL != VALUE_DIALOG)
  415. ##--END-- <<*ClientName QUERY_BASE_NAME [[BaseClient]]
  416. }
  417.  
  418.  
  419. ##QUERY_WIND_CLIENT [[ClientName]]
  420. ##--BEGIN-- <<*ClientName QUERY_BASE_NAME [[BaseClient]]
  421. ##--BEGIN-- BaseClient == "TListBox"
  422. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  423. // Used by ListBox client to read a text file into the list box.
  424. //
  425. void [[TApplication]]::LoadTextFile()
  426. {
  427.   TListBox*   client = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), TListBox);
  428.  
  429. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  430.   // Only work if the client class is a TListBox.
  431.   //
  432.   if (client) {
  433.     TAPointer<char> buf = new char[255+1];
  434.     ifstream   inStream(FileData.FileName);
  435.  
  436.     client->ClearList();
  437.     while (inStream.good()) {
  438.       inStream.getline(buf, 255);
  439.       if (inStream.good())
  440.         client->AddString(buf);
  441.     }
  442.  
  443. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  444.     // Return an error message if we had a stream error and it wasn't the eof.
  445.     //
  446.     if (inStream.bad() && !inStream.eof()) {
  447.       string msgTemplate(*this, IDS_UNABLEREAD);
  448.       char*  msg = new char[_MAX_PATH + msgTemplate.length()];
  449.       sprintf(msg, msgTemplate.c_str(), *FileData.FileName);
  450.       GetMainWindow()->MessageBox(msg, GetName(), MB_ICONEXCLAMATION | MB_OK);
  451.       delete msg;
  452.     }
  453.   }
  454. }
  455.  
  456.  
  457. ##--END-- BaseClient == "TListBox"
  458. ##--END-- <<*ClientName QUERY_BASE_NAME [[BaseClient]]
  459. ##--END-- @QUERY_APPL_MODEL != VALUE_DIALOG
  460. //{{TSDIDecFrame Implementation}}
  461.  
  462.  
  463. TSDIDecFrame::TSDIDecFrame(TWindow* parent, const char far* title, TWindow* clientWnd, bool trackMenuSelection, TModule* module)
  464. :
  465. ##QUERY_WIND_CLIENT [[ClientClass]]
  466. ##--BEGIN-- <<*ClientClass QUERY_BASE_NAME [[BaseClient]]
  467. ##BaseClient == "TEditFile"
  468.   TDecoratedFrame(parent, title, !clientWnd ? new [[ClientClass]](0, 0, 0) : clientWnd, trackMenuSelection, module)
  469. ##BaseClient == "TListBox"
  470.   TDecoratedFrame(parent, title, !clientWnd ? new [[ClientClass]](0, 0, 0, 0, 100, 100) : clientWnd, trackMenuSelection, module)
  471. ##BaseClient == "TWindow"
  472.   TDecoratedFrame(parent, title, !clientWnd ? new [[ClientClass]](0, "") : clientWnd, trackMenuSelection, module)
  473. ##BaseClient == "TDialog"
  474.   TDecoratedFrame(parent, title, !clientWnd ? new [[ClientClass]](0) : clientWnd, trackMenuSelection, module)
  475. ##--END-- <<*ClientClass QUERY_BASE_NAME [[BaseClient]]
  476. {
  477.   // INSERT>> Your constructor code here.
  478.  
  479. }
  480.  
  481.  
  482. TSDIDecFrame::~TSDIDecFrame()
  483. {
  484.   // INSERT>> Your destructor code here.
  485.  
  486. }
  487. ##--BEGIN-- ((@QUERY_APPL_MODEL == VALUE_DIALOG) && (@OPT_APPL_TOOLBAR || @OPT_APPL_STATUSBAR))
  488.  
  489.  
  490. void TSDIDecFrame::SetupWindow()
  491. {
  492.   TDecoratedFrame::SetupWindow();
  493.   TRect  r;
  494.   GetWindowRect(r);
  495.  
  496. ##@OPT_APPL_TOOLBAR && @OPT_APPL_STATUSBAR && @QUERY_APPL_DLGCLIENT_MENU
  497.   r.bottom += 60;
  498. ## ((!@QUERY_APPL_DLGCLIENT_MENU && @OPT_APPL_STATUSBAR) || (@QUERY_APPL_DLGCLIENT_MENU && @OPT_APPL_TOOLBAR && !OPT_APPL_STATUSBAR))
  499.   r.bottom += 30;
  500.   SetWindowPos(0, r, SWP_NOZORDER | SWP_NOMOVE);
  501.  
  502.   // INSERT>> Your code here.
  503.  
  504. }
  505. ##--END-- ((@QUERY_APPL_MODEL == VALUE_DIALOG) && (@OPT_APPL_TOOLBAR || @OPT_APPL_STATUSBAR))
  506. ##--BEGIN-- @OPT_APPL_PRINTING
  507.  
  508.  
  509. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  510. //--------------------------------------------------------
  511. // [[TApplication]]
  512. // ~~~~~~~~~~
  513. // Menu File Print command
  514. //
  515. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  516. void [[TApplication]]::CmFilePrint()
  517. {
  518. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  519.   // Create Printer object if not already created.
  520.   //
  521.   if (!Printer)
  522.     Printer = new TPrinter(this);
  523.  
  524.   TAPointer<char> docName = new char[_MAX_PATH];
  525.   GetMainWindow()->GetWindowText(docName, _MAX_PATH);
  526.  
  527. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  528.   // Create Printout window and set characteristics.
  529.   //
  530.   TApxPrintout printout(Printer, docName, GetMainWindow()->GetClientWindow());
  531.   printout.SetBanding(true);
  532.  
  533.   Printing++;
  534.  
  535. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  536.   // Bring up the Print dialog and print the document.
  537.   //
  538.   Printer->Print(GetWindowPtr(GetActiveWindow()), printout, true);
  539.  
  540.   Printing--;
  541. }
  542.  
  543.  
  544. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  545. //--------------------------------------------------------
  546. // [[TApplication]]
  547. // ~~~~~~~~~~
  548. // Menu File Print Setup command
  549. //
  550. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  551. void [[TApplication]]::CmFilePrintSetup()
  552. {
  553.   if (!Printer)
  554.     Printer = new TPrinter(this);
  555.  
  556. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  557.   // Bring up the Print Setup dialog.
  558.   //
  559.   Printer->Setup(GetMainWindow());
  560. }
  561.  
  562.  
  563. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  564. //--------------------------------------------------------
  565. // [[TApplication]]
  566. // ~~~~~~~~~~
  567. // Menu File Print Preview command
  568. //
  569. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  570. void [[TApplication]]::CmFilePrintPreview()
  571. {
  572.   TSDIDecFrame* sdiFrame = TYPESAFE_DOWNCAST(GetMainWindow(), TSDIDecFrame);
  573.   if (sdiFrame) {
  574.     if (!Printer)
  575.       Printer = new TPrinter(this);
  576.  
  577.     Printing++;
  578.  
  579.     TApxPreviewWin* prevW = new TApxPreviewWin(sdiFrame, Printer, sdiFrame->GetClientWindow(), "Print Preview", new TLayoutWindow(0));
  580.     prevW->Create();
  581.  
  582. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE 3
  583.     // Here we resize the preview window to take the size of the MainWindow, then
  584.     // hide the MainWindow.
  585.     //
  586.     TFrameWindow * mainWindow =  GetMainWindow();
  587.     TRect r = mainWindow->GetWindowRect();
  588.     prevW->MoveWindow(r);
  589.     prevW->ShowWindow(SW_SHOWNORMAL);
  590.     mainWindow->ShowWindow(SW_HIDE);
  591.  
  592.     BeginModal(GetMainWindow());
  593.  
  594. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE 3
  595.     // After the user closes the preview Window, we take its size and use it
  596.     // to size the MainWindow, then show the MainWindow again.
  597.     //
  598.     r = prevW->GetWindowRect();
  599.     mainWindow->MoveWindow(r);
  600.     mainWindow->ShowWindow(SW_SHOWNORMAL);
  601.  
  602.     Printing--;
  603.  
  604. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  605.     // Now that printing is off we can invalidate because the edit window to repaint.
  606.     //
  607.     GetMainWindow()->SetRedraw(true);
  608.     GetMainWindow()->Invalidate();
  609.  
  610. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE 3
  611.     // We must destroy the preview window explicitly.  Otherwise, the window will
  612.     // not be destroyed until it's parent the MainWindow is destroyed.
  613.     //
  614.     prevW->Destroy();
  615.     delete prevW;
  616.   }
  617. }
  618.  
  619.  
  620. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  621. //--------------------------------------------------------
  622. // [[TApplication]]
  623. // ~~~~~~~~~~
  624. // Menu enabler used by Print, Print Setup and Print Preview.
  625. //
  626. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  627. void [[TApplication]]::CmPrintEnable(TCommandEnabler& tce)
  628. {
  629. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 4
  630.   // If we have a Printer already created just test if all is okay.
  631.   // Otherwise create a Printer object and make sure the printer really exists
  632.   // and then delete the Printer object.
  633.   //
  634.   if (!Printer) {
  635.     Printer = new TPrinter(this);
  636.       tce.Enable(!Printer->GetSetup().Error);
  637.   }
  638.   else
  639.     tce.Enable(!Printer->GetSetup().Error);
  640. }
  641. ##--END-- @OPT_APPL_PRINTING
  642. ##--BEGIN-- @OPT_APPL_HELP
  643.  
  644.  
  645. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  646. //--------------------------------------------------------
  647. // [[TApplication]]
  648. // ~~~~~
  649. // Menu Help Contents command
  650. //
  651. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  652. void [[TApplication]]::CmHelpContents()
  653. {
  654. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  655.   // Show the help table of contents.
  656.   //
  657.   HelpState = GetMainWindow()->WinHelp(HelpFileName, HELP_CONTENTS, 0);
  658. }
  659.  
  660.  
  661. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  662. //--------------------------------------------------------
  663. // [[TApplication]]
  664. // ~~~~~
  665. // Menu Help Using Help command
  666. //
  667. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  668. void [[TApplication]]::CmHelpUsing()
  669. {
  670. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  671.   // Display the contents of the Windows help file.
  672.   //
  673.   HelpState = GetMainWindow()->WinHelp(HelpFileName, HELP_HELPONHELP, 0);
  674. }
  675. ##--END-- @OPT_APPL_HELP
  676.  
  677.  
  678. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  679. //--------------------------------------------------------
  680. // [[TApplication]]
  681. // ~~~~~~~~~~~
  682. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  683. ##@QUERY_TARGET_NAME [[Target]]
  684. // Menu Help About [[Target]] command
  685. //
  686. void [[TApplication]]::CmHelpAbout()
  687. {
  688. ##"" [[TDialog]]
  689. ##--BEGIN-- ((@QUERY_APPL_MODEL != VALUE_DIALOG) || ((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU))
  690. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  691.   // Show the modal dialog.
  692.   //
  693. ##      :<<TDialog QUERY_CLASS_NAME TDialog
  694.   [[TDialog]](MainWindow).Execute();
  695. ##--END-- ((@QUERY_APPL_MODEL != VALUE_DIALOG) || ((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU))
  696. }
  697. ##--BEGIN-- @OPT_APPL_DRAGDROP
  698.  
  699.  
  700. void [[TApplication]]::EvDropFiles(TDropInfo drop)
  701. {
  702. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  703.   // Tell DragQueryFile the file interested in (0) and the length of your buffer.
  704.   //
  705.   int    namelen = drop.DragQueryFileNameLen(0) + 1;
  706.   char*  fileName = new char[namelen];
  707.  
  708.   drop.DragQueryFile(0, fileName, namelen);
  709.  
  710. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  711.   // Open the file that was dropped.
  712.   //
  713.   AddFile(fileName);
  714.  
  715. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  716.   // Release the memory allocated for this handle with DragFinish.
  717.   //
  718.   drop.DragFinish();
  719.   delete[] fileName;
  720. }
  721.  
  722.  
  723. void [[TApplication]]::AddFile(const char* FileName)
  724. {
  725. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  726.   // Open the file dragged in.
  727.   //
  728. ##QUERY_WIND_CLIENT [[ClientClass]]
  729. ##--BEGIN-- <<*ClientClass QUERY_BASE_NAME [[BaseClient]]
  730.   [[ClientClass]]* client = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), [[ClientClass]]);
  731.   if (client->CanClose()) {
  732.     strcpy(FileData.FileName, FileName);
  733. ##BaseClient == "TEditFile"
  734.     client->ReplaceWith(FileData.FileName);
  735. ##BaseClient == "TListBox" 2
  736.     client->ClearList();
  737.     LoadTextFile();
  738. ##--BEGIN-- (@OPT_APPL_MRU) && (@QUERY_APPL_MODEL != VALUE_DIALOG)
  739.  
  740. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  741.     // Add the file to the MRU list.
  742.     //
  743.     SaveMenuChoice(FileData.FileName);
  744. ##--END-- (@OPT_APPL_MRU) && (@QUERY_APPL_MODEL != VALUE_DIALOG)
  745.   }
  746. ##--END-- <<*ClientClass QUERY_BASE_NAME [[BaseClient]]
  747. }
  748. ##--END-- @OPT_APPL_DRAGDROP
  749. ##--BEGIN-- (@OPT_APPL_MRU) && (@QUERY_APPL_MODEL != VALUE_DIALOG)
  750.  
  751.  
  752. int32 [[TApplication]]::CmFileSelected(uint wp, int32)
  753. {
  754.   TAPointer<char> text = new char[_MAX_PATH];
  755.  
  756.   GetMenuText(wp, text, _MAX_PATH);
  757.  
  758.   OpenFile(text);
  759.   return 0;
  760. }
  761. ##--END-- (@OPT_APPL_MRU) && (@QUERY_APPL_MODEL != VALUE_DIALOG)
  762.  
  763.  
  764. ##{main.owl}
  765.